home *** CD-ROM | disk | FTP | other *** search
- //Note to editor: NOT executed from XUL
- //Copyright 2009 Yongqian Li.
-
- (function()
- {
- var yandex_lang_codes = ['ru', 'rus',
- 'uk', 'ukr',
- 'be', 'bel',
- 'kk', 'kaz',
- 'uz', 'uzb',
- 'kaa', 'kaa',
- 'tk', 'tuk',
- 'tut', 'gag',
- 'mo', 'mol',
- 'ky', 'kir',
- 'et', 'est',
- 'lt', 'lit',
- 'lv', 'lav',
- 'hy', 'arm', 'hye',
- 'az', 'aze',
- 'ka', 'geo', 'kat',
- 'tg', 'tgk'];
-
- var show_yandex = false;
- for(var x = 0; x < yandex_lang_codes.length; x++)
- {
- if(navigator.language == yandex_lang_codes[x] || navigator.language.indexOf(yandex_lang_codes[x] + "-") == 0)
- {
- show_yandex = true;
- }
- }
-
-
- /* //BEGIN FasterFox widget specific code
- var $ = window.finderfox_$
- var config = {
- showPopupBubble: true,
- openNewTab: true,
- forceSingleRow: false,
- animate: true,
- enableGhosting: false,
- source: "finderfox",
-
- customSearchEngines: [],
-
- searchWikipedia: true,
- searchOneRiot: true,
- searchYandex: false,
- searchDelicious: false,
- searchTwitter: false,
- searchSurfCanyon: true,
- tweetThis: true,
- searchBing: false,
- searchBaidu: false,
- searchReddit: false,
- searchYouTube: false,
- searchWiktionary: false,
- searchGoogle: true,
- showHomepageLink: true
- };
- if(!$.support.opacity)
- {
- config.animate = false;
- }
-
- if(show_yandex && config.searchGoogle && !config.searchYandex)
- {
- //default config, override
- config.searchGoogle = false;
- config.searchYandex = true;
- }
-
- var ext_config = window.finderfoxConfig;
- if(ext_config)
- {
- if(ext_config.customSearchEngines &&
- ext_config.customSearchEngines.length > 0)
- {
- config.customSearchEngines = [ext_config.customSearchEngines[0]];
- config.searchTwitter = false;
- }
- }
- window.finderfox = {
- //config: config,
- disable: function()
- {
- config.showPopupBubble = false;
- }
- };
- */ //END FasterFox widget specific code
-
- //BEGIN SmarterFox specific code
- //var $ = smarterwiki_$;
- var safe_SW_getBoolPref = function(name)
- {
- try
- {
- return SW_getBoolPref(name);
- }
- catch(err)
- {
- return null;
- }
- };
-
- var config = {
- get showPopupBubble()
- {
- if(unsafeWindow.finderfox)
- {
- /*
- if(safe_SW_getBoolPref("extensions.smarterwiki.show_popup_bubble")) //I override the embedded
- {
- unsafeWindow.finderfox.disable();
- return true;
- }
- */
- return false; //the embedded widget overrides me
- }
- return safe_SW_getBoolPref("extensions.smarterwiki.show_popup_bubble");
- },
- get openNewTab()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.popup_bubble_open_new_tab");
- },
- get forceSingleRow()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.popup_bubble_force_single_row");
- },
- animate: true,
- enableGhosting: true,
- source: "smarterfox",
- get customSearchEngines()
- {
- return [
- /*
- [
- "Diig search",
- "http://www.digg.com/favicon.ico",
- "http://diig.com{searchTerms}"
- ],
- [
- "Diig search",
- "http://www.digg.com/favicon.ico",
- "http://diig.com{searchTerms}"
- ],
- */
- ];
- //return [];
- },
-
- get searchWikipedia()
- {
- return true;
- },
- get searchOneRiot()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.search_oneriot");
- },
- get searchYandex()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.search_yandex");
- /*
- var pref_searchYandex = safe_SW_getBoolPref("extensions.smarterwiki.search_yandex");
- var pref_searchGoogle = safe_SW_getBoolPref("extensions.smarterwiki.search_google");
- if(show_yandex && pref_searchGoogle && !pref_searchYandex)
- {
- //default config, override
- return true;
- }
- return pref_searchYandex;
- */
- },
- get searchDelicious()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.search_delicious");
- },
- get searchTwitter()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.search_twitter");
- },
- get searchSurfCanyon()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.search_surfcanyon");
- },
- get tweetThis()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.tweet_this");
- },
- get searchBing()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.search_bing");
- },
- get searchBaidu()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.search_baidu");
- },
- get searchReddit()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.search_reddit");
- },
- get searchYouTube()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.search_youtube");
- },
- get searchWiktionary()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.search_wiktionary");
- },
- get searchGoogle()
- {
- return safe_SW_getBoolPref("extensions.smarterwiki.search_google");
- /*
- var pref_searchYandex = safe_SW_getBoolPref("extensions.smarterwiki.search_yandex");
- var pref_searchGoogle = safe_SW_getBoolPref("extensions.smarterwiki.search_google");
- if(show_yandex && pref_searchGoogle && !pref_searchYandex)
- {
- //default config, override
- return false;
- }
- return pref_searchGoogle;
- */
- },
- showHomepageLink: false,
- };
- //END SmarterFox specific code
-
-
- var get_config = function(callback)
- {
- callback(config);
- };
- if(window.chrome && window.chrome.extension) // detect chrome
- {
- $.prototype.ready = function(callback) {
- callback();
- };//doesn't work on Chrome, cheap hack
-
- get_config = function(callback)
- {
- var config = {
- animate: true,
- enableGhosting: true,
- source: "smarterfox",
- customSearchEngines: [],
- searchWikipedia: true,
- showHomepageLink: false
- };
- var config_map = {
- showPopupBubble: "show_popup_bubble",
- openNewTab: "popup_bubble_open_new_tab",
- forceSingleRow: "popup_bubble_force_single_row",
- searchOneRiot: "search_oneriot",
- searchYandex: "search_yandex",
- searchDelicious: "search_delicious",
- searchTwitter: "search_twitter",
- searchSurfCanyon: "search_surfcanyon",
- tweetThis: "tweet_this",
- searchBing: "search_bing",
- searchBaidu: "search_baidu",
- searchReddit: "search_reddit",
- searchYouTube: "search_youtube",
- searchWiktionary: "search_wiktionary",
- searchGoogle: "search_google"
- };
-
- var get_localStorage = function(key, callback) //only used for Chrome
- {
- chrome.extension.sendRequest({"msg_type": "get_localStorage", "key": key}, function(response)
- {
- if(callback)
- {
- callback(response.value);
- }
- });
- };
- getBoolPref = function(pref_name, callback)
- {
- get_localStorage("pref." + pref_name, function(str)
- {
- callback(str == "true");
- });
- };
-
- for(var key in config_map)
- {
- (function(prop_name)
- {
- getBoolPref(config_map[prop_name], function(pref_value)
- {
- config[prop_name] = pref_value;
- config_map[prop_name] = null;
- for(var prop_name2 in config_map) {
- if(config_map[prop_name2]) {
- return;
- }
- }
- /*
- if(window.finderfox) {
- config["showPopupBubble"] = false;
- }*///doesn't work :(
- callback(config);
- });
- })(key);
- }
- };
- }
-
-
-
-
- var get_log_msg_url = function(msg)
- {
- msg["rand"] = parseInt(Math.random() * 1000000000);
- var params = [];
- for(var k in msg)
- {
- params.push(encodeURIComponent(k) + "=" + encodeURIComponent(msg[k]));
- }
- /*
- if("https:" == document.location.protocol)
- {
- return "https://ssl.msgs.smarterfox.com/log_msg?" + params.join("&");
- }
- */
- return "http://msgs.smarterfox.com/log_msg?" + params.join("&");
- };
-
-
- var log_msg_async = function(msg, callback)
- {
- var $ting = $('<img style="display: none;" />');
- if(callback)
- {
- $ting.load(callback);
- }
- $ting.attr("src", get_log_msg_url(msg));
- return $ting;
- };
-
-
- /*//doesn't work for some reason :(
- var log_msg_async = function(msg, callback)
- {
- var ting = new Image(1, 1);
- if(callback)
- {
- ting.onload = callback;
- }
- ting.src = get_log_msg_url(msg);
- return ting;
- };
- */
-
- var track_click = function($a, msg)
- {
- $a.mouseup(function(event)
- {
- var original_href = $a.attr("href");
- msg["redirect_to"] = original_href;
- $a.attr("href", get_log_msg_url(msg));
-
- setTimeout(function()
- {
- $a.attr("href", original_href);
- }, 10);
- });
- };
-
-
- /*
- var log_msg_blocking = function(msg)
- {
- try
- {
- var req = new XMLHttpRequest();
- req.open("GET", get_log_msg_url(msg), false);
- req.send(null);
- return req;
- }
- catch(ex)
- {
- }
- };
- */
-
- var arrayDeepEq = function(a1, a2)
- {
- if(a1.length != a2.length)
- {
- return false;
- }
- for(var i = 0; i < a1.length; i++)
- {
- if(a1[i] != a2[i])
- {
- return false
- }
- }
- return true;
- };
-
- var isDesignMode = function(doc)
- {
- return !(document.designMode == "off"
- || doc.designMode == "Off" || doc.designMode == "Inherit") // hack for IE
- };
-
- var isLeftClick = function(event)
- {
- return (!$.browser.msie && event.button == 0)
- || ($.browser.msie && event.button == 1); // hack for IE
- };
-
- var getSelection = function(doc)
- {
- try
- {
- return doc.defaultView.getSelection(); // correct way for Firefox
- }
- catch(err){}
- try
- {
- return window.getSelection(); // hack for IE
- }
- catch(err){}
- try
- {
- return document.getSelection(); // hack for IE
- }
- catch(err){}
- try // hack for IE
- {
- var selection = document.selection && document.selection.createRange();
- selection.toString = function() { return this.text };
- return selection;
- }
- catch(err){}
- return null;
- };
-
- var getLastRange = function(selection)
- {
- var lastRange = selection.getRangeAt(selection.rangeCount - 1);
- for(var r = selection.rangeCount - 1; r >= 0; r--)
- {
- if(!selection.getRangeAt(r).collapsed) {
- lastRange = selection.getRangeAt(r);
- break;
- }
- else {
- //alert("invalid range found");
- }
- } //fix Firefox bug? with selecting backwards: it creates an range at the end that is collapsed
- return lastRange;
- };
-
- var isValidSelection = function(selection)
- {
- try
- {
- /*
- //alert(selection.toString() + ":" +
- selection.anchorNode.nodeName +
- ":" + selection.anchorOffset + ":" +
- selection.focusNode.nodeName + ":" + selection.focusOffset + ":" + selection.isCollapsed);
- //alert(selection.anchorNode == selection.focusNode);
- */
- if(selection.toString())
- {
- if(selection.anchorNode.nodeName.toLowerCase() == "object")
- {//fix problems with flash players on myspace such as http://www.myspace.com/entershikari
- return false;
- }
- if(selection.anchorNode == selection.focusNode &&
- selection.toString().replace(/^\s+|\s+$/g,"").length > Math.abs(selection.focusOffset - selection.anchorOffset))
- {//fix <a> with title button on http://news.bbc.co.uk/2/hi/middle_east/8098776.stm
- return false;
- }
- /*
- if(!(selection.anchorNode.nodeName.toLowerCase() == "#text" &&
- selection.focusNode.nodeName.toLowerCase() == "#text"))
- {//too restrictive
- return false;
- }
- */
- var containsInput = false;
- $("textarea, input[type=text]", doc).each(function(i)
- {
- if(selection.containsNode(this, true))
- {
- containsInput = true; //contains input/textarea
- return false;//break
- }
- });
- return !containsInput;
- }
- else
- {
- return false;
- }
- }
- catch(err) //dirty hack for IE
- {
- return selection.toString();
- }
- };
-
- var show_popup_bubble = function(doc)
- {
- //"popup_bubble_loaded"
- var getSelectionKey = function(selection)
- {
- try
- {
- var lastRange = getLastRange(selection);//selection.getRangeAt(selection.rangeCount - 1);
- return [selection.toString(), lastRange.endContainer, lastRange.endOffset];
- }
- catch(err)
- { //alert("using hack"); //dirty IE hack
- return [selection.toString()];
- }
- };
-
- //BEGIN preview code
- var homepageURL = "http://smarterfox.com/widget/";
-
- var getSearchResultsURL = function(url, terms)
- {
- var language = navigator.language ? navigator.language : navigator.userLanguage;
- var url = url.replace(/{searchTerms}/g, encodeURIComponent(terms));
- url = url.replace(/{language}/g, language);
- return url;
- };
- var searchWikipediaURL = "http://smarterfox.com/wikisearch/search?q={searchTerms}&locale={language}";
- var searchOneRiotURL = "http://www.oneriot.com/search?p=smarterfox&ssrc=" + config.source + "_popup_bubble&spid=8493c8f1-0b5b-4116-99fd-f0bcb0a3b602&q={searchTerms}";
- var searchYandexURL = "http://yandex.ru/yandsearch?text={searchTerms}&clid=127504";
- var searchDeliciousURL = "http://delicious.com/search?p={searchTerms}";
- var searchTwitterURL = "http://search.twitter.com/search?q={searchTerms}";
- var searchSurfCanyonURL = "http://search.surfcanyon.com/search?f=nrl1&q={searchTerms}&partner=fastestfox";
- var tweetThisURL = "http://twitter.com/home?status={searchTerms}";
- var searchBingURL = "http://www.bing.com/search?q={searchTerms}";
- var searchBaiduURL = "http://www.baidu.com/s?wd={searchTerms}";
- var searchRedditURL = "http://www.reddit.com/search?q={searchTerms}";
- var searchYouTubeURL = "http://www.youtube.com/results?search_query={searchTerms}";
- var searchWiktionaryURL = "http://en.wiktionary.org/wiki/Special:Search?search={searchTerms}&go=Define";
- var searchGoogleURL = "http://www.google.com/search?q={searchTerms}";
-
- var buildPopupSearchBubbleLite = function(config, searchQuery)//, insertCallback) //dirty hack for IE
- {
- var $popupBubble = $('<a class="smarterwiki-popup-bubble smarterwiki-popup-bubble-lite smarterwiki-popup-bubble-active" href="'
- + getSearchResultsURL(searchWikipediaURL, searchQuery) + '"></a>', doc);
- if(config.openNewTab)
- {
- $popupBubble.attr("target", "_blank");
- }
- //insertCallback($popupBubble);
- return $popupBubble;
- };
-
- var buildPopupSearchBubbleFull = function(config, searchQuery)//, insertCallback)
- {
- var $popupBubble = $(
- '<span class="smarterwiki-popup-bubble smarterwiki-popup-bubble-active"></span>',
- doc
- );
-
- var $popupBubbleLinks = $(
- '<span class="smarterwiki-popup-bubble-links smarterwiki-clearfix"></span>',
- doc).appendTo(
- $('<span class="smarterwiki-popup-bubble-body"></span>', doc)
- .appendTo($popupBubble)
- );
-
- var homepageLink = function(classes)
- {
- var $a = $('<a href="' + homepageURL + '" class="' + classes + '"></a>', doc);
- if(config.openNewTab)
- {
- $a.attr("target", "_blank");
- }
- track_click($a, {name: "homepage_visited", source: config.source});
- return $a;
- };
-
- var $popupBubbleTip = (
- //config.showHomepageLink ? homepageLink("smarterwiki-popup-bubble-tip") :
- $('<span class="smarterwiki-popup-bubble-tip"></span>', doc)
- ).appendTo($popupBubble);
-
- var bubbleLinkAs = [];
-
- var addBubbleLink = function(title, icon_src, href, track)
- {
- var $a = $('<a class="smarterwiki-popup-bubble-link"></a>', doc)
- .attr("href", href)
- //.attr("href", "#")
- .attr("title", title)
- .append(
- $('<img alt="" class="smarterwiki-popup-bubble-link-favicon" />', doc)
- .attr("src", icon_src)
- );
-
- if(config.openNewTab)
- {
- $a.attr("target", "_blank");
- }
-
- if(track)
- {
- track_click($a, {name: "popup_bubble_searched", search_engine_title: title, source: config.source});
- }
-
- bubbleLinkAs.push($a);
- return $a;
- };
-
- //addBubbleLink("http://static.smarterfox.com/media/wiki-favicon.png", searchWikipediaURL(searchQuery), "Search Wikipedia");
- if(config.searchWikipedia)
- {
- addBubbleLink(
- "Search Wikipedia",
- //"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAIpwAACKcBMsYCAwAAAAd0SU1FB9kFEwgQLXKnj9oAAAPsSURBVDiNdVRZSGRXEH1Joz8icSIMJsEQEvKvov4ICoOYIAp+KKISkLiAgij5UGOMjgoug6CiKC64i/sSpVHcl7jv7W6722pcWmyNoqBW6hRpyYSZC8W7975bdU+dOrcUIlL+axYWFq+SkpLybWxsYo17VlZWX/H6DebOzs4/ent7/+Lu7v7z/31h7y8U5fvV1VWNra3tIObGvZqamtaHh4fHxMTExb29vcejoyMKCwt7jIqKWuD/bz4Y0MXF5e319bU2JyfngA99x/YJ22empqZuERERKwcHB9Td3U37+/u0srJCc3NzNDIyQk1NTVcqleonPvv6JSCPL87OznQ8p+TkZC2vv2GzcnNz+83a2joqLy9vCQFnZ2dpfX2dlpaWqLe3lzo7O+WStLS0ORMTE7+XgCkpKTX07/Dz86PIyEhDVlaWISMjgxISEmRfp9PRzs4O7e7uEtMi6EZHRyVweHg4gp6bm5tbKK958PlbODES+ZmZmQmkxjsE2d3dHWm1WsrOzqa6ujoaGhqigYEBGh4epvT0dCovLyd7e3sfhR3fGR0vLy9fULa0tMj8/PycNBoNcVGIi0NxcXHU09NDY2Nj1N/fL2mXlZXJJV5eXkXK9va2DojggIDPz8/iuLGxQcvLy8IXEN7c3JBer5f14uKiIOzr66P29naqqqqiiooK8vf3n1aYbP3ExIQcZkkIKgcHBwJ/BoNB1ltbW8IbF466urrk3OTkpFhDQ4MEZA7Jx8fnSGEJ6I2pHh4eyvf2ViglVBbBwBMQb25u0sLCgnAXExMjVLS1tVFJSYmkHRoa+pfCmydwPjk5EYf7+3txwBoVRTFmZmZetFdcXEyBgYGUm5srVa6traWioiIqKCig4ODgVYVJnUE6LGpBhLQQDMjAHeaQzPT0tASG7iorK0U2kAwC4hIE9PT0HFZYvB7j4+NPQHlxcSGFOD4+Fvnw8xKOUGnwxAWkqakpqSz7CJ/V1dXEmiV+/+To6Pi7CJvFq356ehIHaA2ogPjq6krSRlVbW1ulqoODgyIbyMfX15dKS0spNjYWAf+2tLT8UgLyJAIPHinPz89LFcEXJIJUcdHa2ppIBAjVajWlpqYSNwcqLCwUdEFBQX9+ysP4llXcSf7gFO6A8PT0lJqbm4UXvB6kBc6QKgz/sAfu8Ers7OzecYxv3+s2PD53dXX9FVUFCiCqr6+njo4OSRMBwSN3FylKfn4+MQgKCAhAC1N9rB+aODk5vWUU5+ARUoHu8CpQ0cbGRjFcxA3kkjtRAft8/dEGazRuRabcZH8ICQkpjo6OVjNHmvj4+GXuiyMeHh453ATCzMzMXn3I9x8oCiuuorpqawAAAABJRU5ErkJggg==",
- "http://static.smarterfox.com/media/wiki-favicon-sharpened.png",
- getSearchResultsURL(searchWikipediaURL, searchQuery),
- true
- );
- }
-
- for(var s = 0; s < config.customSearchEngines.length; s++)
- {
- addBubbleLink(
- config.customSearchEngines[s][0],
- config.customSearchEngines[s][1],
- getSearchResultsURL(config.customSearchEngines[s][2], searchQuery),
- true
- );
- }
-
- if(config.searchOneRiot)
- {
- addBubbleLink(
- "Search OneRiot",
- //"data:;base64,AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAA////APbu/A++dfOOjQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/++dfOO9u78D////wD///8AqUfvv40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+wVvCu////ANOh9mCNCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6//TofZgmyjt3o0K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/5so7d6NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/7FX8f/jwvr/48L6/+PC+v/jwvr/48L6/+PC+v/jwvr/zZT2/40K6/+NCuv/48L6/+PC+v+4ZvP/jQrr/82U9v/jwvr/zZT2/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+4ZvP/////////////////////////////////////////////////jQrr/40K6////////////+PC+v+NCuv/1KP4////////////jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/ojjv//jw/v////////////////////////////////////////////////+UGez/jQrr/+PC+v//////48L6/40K6//GhfX///////////+bKe7/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/6I47//48P7//////////////////////////////////////////////////////6pH8P+NCuv/48L6////////////jQrr/7hm8////////////6pH8P+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+UGez/+PD+////////////////////////////////////////////////////////////qkfw/40K6//GhfX///////////+NCuv/qkfw////////////sVfx/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/lBns/+rR+//////////////////////////////////////////////////////////////////GhfX/jQrr/8aF9f///////////6I47/+iOO/////////////GhfX/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6//Uo/j//////////////////////////////////////////////////////////////////////8aF9f+NCuv/sVfx////////////qkfw/40K6////////////82U9v+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/6pH8P/48P7/////////////////////////////////////////////////////////////////48L6/40K6/+qR/D///////////+/dfT/jQrr//jw/v//////48L6/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/6I47//48P7////////////////////////////////////////////////////////////GhfX/jQrr/7FX8f///////////6pH8P+UGez////////////NlPb/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/6I47//q0fv/////////////////////////////////////////////////6tH7/5QZ7P+iOO//+PD+///////NlPb/lBns/+rR+///////6tH7/5QZ7P+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/5QZ7P/q0fv//////////////////////////////////////+rR+/+UGez/lBns//jw/v//////1KP4/40K6//Uo/j//////+rR+/+UGez/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/5QZ7P/jwvr////////////////////////////48P7/lBns/5QZ7P/q0fv//////9uy+f+NCuv/1KP4///////48P7/mynu/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6//Uo/j/////////////////+PD+/6I47/+UGez/6tH7///////q0fv/lBns/7919P//////+PD+/6I47/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6//NlPb///////////+iOO//jQrr/7919P//////6tH7/5QZ7P+bKe7///////////+qR/D/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+xV/H/sVfx/40K6/+NCuv/jQrr/7919P+bKe7/jQrr/40K6/+xV/H/sVfx/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/ojjuz40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/6I47s/asfhQjQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/2rH4UP///wC3ZvKfjQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/7dm8p////8A////AP///wDFg/SBjQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6//Fg/SB////AP///wD///8A////AP///wDv3/sfzJL1cMWD9IHFg/SBxYP0gcWD9IHFg/SBxYP0gcWD9IHFg/SBxYP0gcWD9IHFg/SBxYP0gcWD9IHFg/SBxYP0gcWD9IHFg/SBxYP0gcWD9IHFg/SBxYP0gcWD9IHTofZg9u78D////wD///8A////AMAAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAAcAAAAP4AAAfKAAAABAAAAAgAAAAAQAgAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAObM+jKZJO3jjQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/mSTt4+jP+i+hNu7PjQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+hNu7PjQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/vXHz//Hg/P/x4Pz/8eD8/+vV+/+NCuv/8eD8/61P8P/gvvn/uWny/40K6/+NCuv/jQrr/40K6/+NCuv/slrx//37/v//////////////////////lh3s//Hg/P+/dfP/37r5/9Cb9/+NCuv/jQrr/40K6/+NCuv/p0Pv//37/v///////////////////////////6I47v/iwvr/y5D2/9Kf9//dtvn/jQrr/40K6/+NCuv/jQrr/922+f////////////////////////////////+wVvH/1qf3/9mu+P/EgPT/69X7/40K6/+NCuv/jQrr/40K6/+SFez/4L75///////////////////////58/7/ojju/+nR+//CfPT/37r5/9Kf9/+NCuv/jQrr/40K6/+NCuv/jQrr/44N6//Yqvj////////////9+/7/qUfv/922+f/Ol/b/zZP2/9+6+f+ODev/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/8uQ9v//////slrx/8+X9v/Zrvj/u23z/+jN+/+SFez/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/nzDu/40K6/+ZJO3/kBHr/5Yd7P+WHez/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+SFevzjQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+SFevzxob0e40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/jQrr/40K6/+NCuv/xob0e////wDPmvZnqknvu6hF78CoRe/AqEXvwKhF78CoRe/AqEXvwKhF78CoRe/AqEXvwKhF78CsTfC20Z32ZP///wCAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABAADAAwAA",
- //"http://www.oneriot.com/images/favicon.ico",
- "http://static.smarterfox.com/media/popup_bubble/oneriot-favicon.ico",
- getSearchResultsURL(searchOneRiotURL, searchQuery),
- true
- );
- }
- if(config.searchDelicious)
- {
- addBubbleLink(
- "Search Delicious",
- "http://delicious.com/favicon.ico",
- getSearchResultsURL(searchDeliciousURL, searchQuery),
- true
- );
- }
- if(config.searchSurfCanyon)
- {
- addBubbleLink(
- "Search Surf Canyon",
- "http://surfcanyon.com/favicon.ico",
- getSearchResultsURL(searchSurfCanyonURL, searchQuery),
- true
- );
- }
- if(config.searchTwitter)
- {
- addBubbleLink(
- "Search Twitter",
- //"data:;base64,AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAADw4ikA7d0HAO3cAAD16nwA8+doAP7+/QDz52cA/PrpAPTpdgD9/f0A///+AP39/gD8/PkA7d0IAPv42QD9/fwA/P3/APv2yADs2gAA+/v4APv2xwD264QA8OI5APPnZgDu3QAA+PGgAPXqgADx5E4A9+6aAO/gGAD164UA9ep+APDiOAD+/foA+fr6APfulADx5VAA7dsAAPz89QD37pMA9up8APz8/AD8+dcA/PjUAPz3zQD79MIA+/r4AP7++AD8/PsA/frnAPr1vgD7+eEA9uyLAP7+/AD9+/AA9eyFAPz54QD7+/YA7+EjAPr31QD48KUA9ep3APz53gD16n8A/Pv5APjxpgD48akA+/vxAPr7+gDz6GgA798AAP388gDx5EYA9Ol1APXqdQDu3hkA8uZYAPPnXgD+/v8A/PvzAP7//gDv4AAA/v//APz79AD48bEA+fO0APbsjAD7+NwA/fvtAPbtkADv4BQA+/jfAPv42gD79soA8+dgAPPmYwD9/PoA/f37APz8+AD9/PkA+fS8APDjOgD8/PcA+/fYAPbuigD69sYA+PGiAPv65gD37pYA/PrxAOzbAAD69s8A/PrqAPbthgD16XYA9elxAPv69QD8+uIA+/jYAPv54wD69tQA7NwAAPjxpAD48Z4A7t4AAP7+/gD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgAUibVx2Dg52TwyAgICAgA8JIzoBAQ0NAiBHgICAgAVjTRIYfHx8fHwSMoCAgIAQcW58fAICAnklSzGAgIB9QwBGUVpoQWoZej6AgICAfXg6AB17EAkLCylQgICAgFJvZUgWaTAKfX01gICAgIBOOyRMG2Q2B3AHayGAgICAfWdeBEUEBgQGBl83L4CAgIBXcz0ICElKcgg9FyqAgICAWz8VHh8DAygDAxpYgICAfTM0WVZVXREUFBF1YICAgH13bBwnPkQTEy5AD4CAgIB9B0JUPDgMgICAgICAgICACmYrLSwmBYCAgICAgICAgIBhdFM5YoCAgICAgICAgPADAADgAwAAwAMAAMADAACABwAAgAcAAIAPAACABwAAgAMAAMADAADAAwAAgAMAAIAHAACA/wAAgP8AAMH/AAA=",
- "http://twitter.com/favicon.ico",
- getSearchResultsURL(searchTwitterURL, searchQuery),
- true
- );
- }
- if(config.tweetThis)
- {
- addBubbleLink(
- "Tweet This!",
- "http://static.smarterfox.com/media/finderfox/tweet_this.png",
- getSearchResultsURL(tweetThisURL, '"' + searchQuery + '" - ' + doc.location.href),
- true
- );
- }
- if(config.searchBing)
- {
- addBubbleLink(
- "Search Bing",
- "http://www.bing.com/favicon.ico",
- getSearchResultsURL(searchBingURL, searchQuery),
- true
- );
- }
- if(config.searchBaidu)
- {
- addBubbleLink(
- "Search Baidu",
- "http://www.baidu.com/favicon.ico",
- getSearchResultsURL(searchBaiduURL, searchQuery),
- true
- );
- }
- if(config.searchReddit)
- {
- addBubbleLink(
- "Search Reddit",
- "http://www.reddit.com/favicon.ico",
- getSearchResultsURL(searchRedditURL, searchQuery),
- true
- );
- }
- if(config.searchYouTube)
- {
- addBubbleLink(
- "Search YouTube",
- "http://www.youtube.com/favicon.ico",
- getSearchResultsURL(searchYouTubeURL, searchQuery),
- true
- );
- }
- if(config.searchWiktionary)
- {
- addBubbleLink(
- "Search Wiktionary",
- "http://en.wiktionary.org/favicon.ico",
- getSearchResultsURL(searchWiktionaryURL, searchQuery),
- true
- );
- }
- if(config.searchGoogle)
- {
- addBubbleLink(
- "Search Google",
- //"data:;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7PT7/3zF6/9Ptu//RbHx/0227/+Tzvb/9vv5/97h0f9JeBz/NHoA/z98Av9AfAD/PHsA/0F6AP8AAAAA/vz7/1+33/8Mp+z/FrHw/xWy8f8bs/T/Hqrx/3zE7v////7/t8qp/zF2A/87gwH/P4ID/z59AP8+egD/Q3kA/97s8v8botj/ELn3/wy58f8PtfL/D7Lw/xuz9P8vq+f/8/n///779v9KhR3/OYYA/0GFAv88hgD/QIAC/z17AP/0+/j/N6bM/wC07/8Cxf7/CsP7/wm+9v8Aqur/SrDb//7+/v///P7/VZEl/zSJAP87jQD/PYYA/0OBBf8+fQH///3//9Dp8/84sM7/CrDf/wC14/8CruL/KqnW/9ns8f/8/v//4OjX/z+GDf85kAD/PIwD/z2JAv8+hQD/PoEA/9C7pv/97uv////+/9Xw+v+w3ej/ls/e/+rz9///////+/z6/22mSf8qjQH/OJMA/zuQAP85iwL/PIgA/zyFAP+OSSL/nV44/7J+Vv/AkG7/7trP//7//f/9//7/6/Lr/2uoRv8tjQH/PJYA/zuTAP87kwD/PY8A/z2KAP89hAD/olkn/6RVHP+eSgj/mEgR//Ho3//+/v7/5Ozh/1GaJv8tlAD/OZcC/zuXAv84lAD/O5IC/z2PAf89iwL/OIkA/6hWFf+cTxD/pm9C/76ihP/8/v//+////8nav/8fdwL/NZsA/zeZAP83mgD/PJQB/zyUAf84jwD/PYsB/z6HAf+fXif/1r6s//79///58u//3r+g/+3i2v/+//3/mbiF/yyCAP87mgP/OpgD/zeWAP85lgD/OpEB/z+TAP9ChwH/7eHb/////v/28ej/tWwo/7tUAP+5XQ7/5M+5/////v+bsZn/IHAd/zeVAP89lgP/O5MA/zaJCf8tZTr/DyuK//3////9////0qmC/7lTAP/KZAT/vVgC/8iQWf/+//3///j//ygpx/8GGcL/ESax/xEgtv8FEMz/AALh/wAB1f///f7///z//758O//GXQL/yGYC/8RaAv/Ojlf/+/////////9QU93/BAD0/wAB//8DAP3/AAHz/wAA5f8DAtr///////v7+/+2bCT/yGMA/89mAP/BWQD/0q+D///+/////P7/Rkbg/wEA+f8AA/z/AQH5/wMA8P8AAev/AADf///7/P////7/uINQ/7lXAP/MYwL/vGIO//Lm3P/8/v//1dT2/woM5/8AAP3/AwH+/wAB/f8AAfb/BADs/wAC4P8AAAAA//z7/+LbzP+mXyD/oUwE/9Gshv/8//3/7/H5/zo/w/8AAdX/AgL6/wAA/f8CAP3/AAH2/wAA7v8AAAAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAA==",
- "http://www.google.com/favicon.ico",
- getSearchResultsURL(searchGoogleURL, searchQuery),
- false
- );
- }
- if(config.searchYandex)
- {
- addBubbleLink(
- "Search Yandex",
- "http://www.yandex.ru/favicon.ico",
- getSearchResultsURL(searchYandexURL, searchQuery),
- true
- );
- }
-
- if(config.showHomepageLink)
- {
- var $a = addBubbleLink(
- "What is this?",
- "http://static.smarterfox.com/media/img/smarterfox-logo.png",
- homepageURL
- );
- track_click($a, {name: "homepage_visited", source: config.source});
- }
-
-
- var numRows = config.forceSingleRow ? 1 : Math.floor(Math.sqrt(bubbleLinkAs.length));
- var numCols = Math.ceil(bubbleLinkAs.length / numRows);
- bubbleLinkAs.reverse();
- var a_bubbleLinkA = bubbleLinkAs[0];
- while(bubbleLinkAs.length)
- {
- var $row = $('<span class="smarterwiki-popup-bubble-links-row smarterwiki-clearfix"></span>', doc).prependTo($popupBubbleLinks);
- for(var c = 0; c < numCols; c++)
- {
- if(bubbleLinkAs.length)
- {
- $row.append(bubbleLinkAs.pop());
- }
- else
- {
- break;
- }
- }
- }
-
- $popupBubble.css("margin-left", "-" + (3*2 + 3*2 + numCols*18 + (numCols-1)*3) + "px");
- $popupBubble.css("margin-top", "-" + (3*2 + 3*2 + numRows*18 + (numRows-1)*3 + 6) + "px");
-
- //insertCallback($popupBubble);
-
- //$popupBubble.css("margin-left", "-" + $popupBubble.width() + "px");
- //$popupBubble.css("margin-top", "-" + $popupBubble.height() + "px");
-
- return $popupBubble;
- };
- //END preview code
-
- var buildPopupSearchBubble = function(searchQuery)//, insertCallback)
- {
- if(!$.browser.msie || ($.browser.msie && $.browser.version.indexOf("8")==0))
- {
- return buildPopupSearchBubbleFull(config, searchQuery);//, insertCallback);
- }
- else
- {//dirty hack for IE
- return buildPopupSearchBubbleLite(config, searchQuery);//, insertCallback); //dirty hack for IE
- }
- };
-
- var insertPopupBubble = function($popupBubble, selection)
- {
- //alert($(".smarterwiki-popup-bubble-active").length);
- //////////////////log_msg_async({name: "popup_bubble_inserted", source: config.source});
- try
- {
- var lastRange = getLastRange(selection);
- //$("<div></div>").append(lastRange.cloneContents())[0].innerHTML
- var newRange = doc.createRange();
- newRange.setStart(lastRange.endContainer, lastRange.endOffset);
- newRange.insertNode($popupBubble[0]);
- return $popupBubble;
- }
- catch(err) //dirty hack for IE
- {
- var $tmp = $('<div></div>', doc).append($popupBubble);
- var newRange = selection.duplicate();
- newRange.setEndPoint("StartToEnd", selection);
- newRange.pasteHTML($tmp[0].innerHTML);
- return $(".smarterwiki-popup-bubble-active");
- }
- };
-
- var cleanupPopupBubble = function($popupBubble)
- {
- if(!isValidSelection(getSelection(doc)) ||
- !arrayDeepEq($popupBubble.data("selectionKey"), getSelectionKey(getSelection(doc)))
- ) //is this still a valid popup?
- {
- $popupBubble.removeClass("smarterwiki-popup-bubble-active");
- //alert("removing");
- if(config.animate)
- {
- $popupBubble.stop(true).fadeTo("normal", 0, function() //no longer valid, remove
- {
- $popupBubble.remove();
- });
- }
- else
- {
- $popupBubble.remove();
- }
- }
- };
-
-
- $(doc).mousedown(function(event)
- {
- //if(isLeftClick(event))
- $(".smarterwiki-popup-bubble", doc).each(function(i)
- {
- cleanupPopupBubble($(this));
- });
- });
-
- $(doc).mouseup(function(event)
- {
- $(".smarterwiki-popup-bubble", doc).each(function(i)
- {
- cleanupPopupBubble($(this));
- });
-
- get_config(function(conf)
- {
- config = conf;
- if(isLeftClick(event))
- {
- if(!isDesignMode(doc)) //this can be set after $.ready() :(
- {
- var selection = getSelection(doc);
- if(config.showPopupBubble && isValidSelection(selection))
- {
- var shouldInsert = $(".smarterwiki-popup-bubble-active").length == 0;
- if(shouldInsert)
- {
- var $popupBubble = buildPopupSearchBubble(selection.toString());//, function($popupBubble)
- $popupBubble = insertPopupBubble($popupBubble, selection);
- //alert("inserted");
- $popupBubble.data("selectionKey", getSelectionKey(selection), null);
- if(config.animate)
- {
- $popupBubble.css("opacity", 0.0);
- if(config.enableGhosting)
- {
- var ghosted_opacity = 0.25;
- $popupBubble.animate({opacity: 1.}, 200)
- .animate({opacity: 1.}, 1300)//.fadeTo("fast", ghosted_opacity)
- .animate({opacity: ghosted_opacity}, 700)//, zIndex: -100000
- .hover(function()//need this because the :hover css doesn't work in quirks mode
- {
- $popupBubble.stop(true).css("opacity", 1.0);//.css("z-index", 2147483647);
- }, function()
- {
- $popupBubble.stop(true).animate({opacity: ghosted_opacity}, 200);
- //.css("opacity", ghosted_opacity).css("z-index", 2147483647);
- });
- }
- else
- {
- $popupBubble.fadeTo("fast", 1.0);
- }
- }
- }
- }
- }
- else
- {
- // in rich editor
- }
- }
- });
- });
- };
-
- var doc = document;
- var blacklist_urlRegExp = new RegExp("https?://(([^/]*\.)?nytimes.com.*)");
- var blacklist_match = blacklist_urlRegExp.exec(doc.location.href);
- if(blacklist_match == null) //ok, add popup bubble
- {
- $(doc).ready(function()
- {
- if(!isDesignMode(doc))
- {
- show_popup_bubble(doc);
- }
- else
- {
- // in rich editor
- }
- });
- }
- else
- {
- // disabled on this page b/c of blacklist
- }
- }());